package com.gouwudai.gobbs.dao;

import java.util.List;

import com.gouwudai.gobbs.common.IPageList;
import com.gouwudai.gobbs.pojo.TbbsClassPermission;
import com.litt.core.common.PageParam;
import com.litt.core.exception.BusiException;

public interface IClassPermissionDAO
{

    /**
     * @param tbbsClassPermission
     * @throws BusiException
     */
    public void save(TbbsClassPermission tbbsClassPermission);

    /**
     * 读取分类版面权限
     * @param id
     * @return
     */
    public TbbsClassPermission load(Integer id);

    /**
     * 按登陆ID和版面ID查询对应权限
     * @param classId 分类版面ID
     * @param loginId 登陆ID
     * @return
     */
    public List listByLoginId(Integer classId, String loginId);

    /**
     * 按用户ID和版面ID查询对应权限
     * @param classId 分类版面ID
     * @param userId 用户ID
     * @return
     */
    public List listByUserId(Integer classId, Integer userId);
    
    /**
     * 按用户ID和版面ID查询未拥有的权限
     * @param classId 分类版面ID
     * @param userId 用户ID
     * @return
     */
    public List listNotByUserId(Integer classId,Integer userId);

    /**
     * 按用户组ID和版面ID查询对应权限
     * @param classId
     * @param gradeId
     * @return
     */
    public List listByGradeId(Integer classId, String gradeId);

    /**
     * 删除权限
     * @param cpId
     */
    public void delete(Integer cpId);

    /**
     * 批量删除权限
     * @param cpIds
     */
    public void deleteBatch(String cpIds);
    
    /**
     * 根据版面和用户删除权限.
     * 
     * @param classId 版面ID
     * @param userId 用户ID
     */
    public void deleteByClassUser(Integer classId,Integer userId);

    /**
     * 查询用户所有版面的所有权限
     * @param userId 用户ID
     * @return
     */
    public List listAllPermission(Integer userId);    
    
    /**
     * @param pageIndex
     * @param pageSize
     * @param sort
     * @return
     */
    public IPageList listPage(int pageIndex, int pageSize, String sort);
    
}